﻿// 3472. 八皇后.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <vector>

using namespace std;
/*
https://www.acwing.com/problem/content/3475/
会下国际象棋的人都很清楚：皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。

如何将 8个皇后放在棋盘上（有 8×8 个方格），使它们谁也不能被吃掉！

这就是著名的八皇后问题。

对于某个满足要求的 8皇后的摆放方法，定义一个皇后串 a与之对应，即 a=b1b2…b8
，其中 bi 为相应摆法中第 i行皇后所处的列数。

已经知道 8 皇后问题一共有 92 组解（即 92 个不同的皇后串）。

给出一个数 b，要求输出第 b 个串。

串的比较是这样的：皇后串 x置于皇后串 y之前，当且仅当将 x 视为整数时比 y小。

输入格式
第一行包含整数 n，表示共有 n 组测试数据。

每组测试数据占 1 行，包括一个正整数 b。

输出格式
输出有 n 行，每行输出对应一个输入。

输出应是一个正整数，是对应于 b 的皇后串。

数据范围
1≤b≤92
输入样例：
2
1
92
输出样例：
15863724
84136275
*/

int graph[9][9];
vector<string> ans;
string curr;

bool Check(int x, int y) {
	for (int i = 1; i <= 8; i++) {
		if (graph[x][i] == 1) return false;
	}

	for (int i = 1; i <= 8; i++) {
		if (graph[i][y] == 1) return false;
	}

	int cx = x; int cy = y;
	while (cx >= 1 && cx <= 8 && cy >= 1 && cy <= 8) {
		cx += 1; cy += 1;
		if (graph[cx][cy] == 1) return false;
	}

	cx = x;   cy = y;
	while (cx >= 1 && cx <= 8 && cy >= 1 && cy <= 8) {
		cx += -1; cy += -1;
		if (graph[cx][cy] == 1) return false;
	}

	cx = x;   cy = y;
	while (cx >= 1 && cx <= 8 && cy >= 1 && cy <= 8) {
		cx += 1; cy += -1;
		if (graph[cx][cy] == 1) return false;
	}


	cx = x;   cy = y;
	while (cx >= 1 && cx <= 8 && cy >= 1 && cy <= 8) {
		cx += -1; cy += 1;
		if (graph[cx][cy] == 1) return false;
	}

	return true;
}

void dfs(int x) {
	if (x > 8) {
		ans.push_back(curr);
		return;
	}

	for (int i = 1; i <= 8; i++) {
		if (Check(x, i)) {
			curr.push_back(i+'0');
			graph[x][i] = 1;
			dfs(x + 1);
			graph[x][i] = 0;
			curr.pop_back();
		}
	}

	return;
}


void init() {
	dfs(1);

	return ;
}

int main()
{
	init();
	int n;
	cin >> n;
	while (n--) {
		int t; cin >> t;
		cout << ans[t - 1] << endl;
	}
	
	return 0;
}

 